import request from '@utils/request'
import { APIParams, APIResult } from '@utils/request/type'
import { DeviceRoleDTO } from '@/api/entity/share'
import { ServerEnum } from '@/api/enum/server'
import { ConfigurationRoleDTO } from '@/api/entity/self-config'

// region TODO 设备分享
/**
 * 分页查询
 * @param params
 */
export const getDeviceShareListByPageAPI = (params: APIParams.Page<{
  // 权限类型 0-仅查看、1-允许控制、3-可管理
  roleType?: string,
  // 共享状态（0代表不共享 1代表共享 2代表管理员）
  status?: string,
  // 开始时间
  startTime?: string
  // 结束时间
  endTime?: string
  // 设备Id
  deviceId: string
}>) => request.post<APIResult.Page<DeviceRoleDTO[]>>(ServerEnum.System + '/deviceRole/page', params)

/**
 * 手机号共享设备
 * @param params
 */
export const deviceShareByPhoneAPI = (params: {
  // 设备id
  deviceId?: string
  // 共享有效期
  expiredTime?: string
  // 账户手机号
  phone?: string
  // 权限类型 0-仅查看、1-允许控制、3-可管理
  roleType?: string
}) => request.post(ServerEnum.System + '/deviceRole/phone', params)

/**
 * 二维码共享设备
 * @param params
 */
export const deviceShareByQRCodeAPI = (params: {
  // 设备id
  deviceId?: string
  // 共享有效期
  expiredTime?: string
  // 权限类型 0-仅查看、1-允许控制、3-可管理
  roleType?: string
}) => request.post<Blob>(ServerEnum.System + '/deviceRole/weChatShareQrCode', params, {
  responseType: 'blob'
})

/**
 * 编辑分享信息
 * @param params
 */
export const editShareInfoAPI = (params: {
  // 设备id
  deviceId?: string
  // 过期时间
  expiredTime?: string
  // 设备权限id
  id?: string
  // 权限类型 0-仅查看、1-允许控制、3-可管理
  roleType?: string
  // 用户id
  userId?: string
  // 共享状态（1代表不共享 0代表共享）
  status?: string
  // 二维码有效时间
  timeOutSeconds?: number
}) => request.post(ServerEnum.System + '/deviceRole/update', params)

/**
 * 删除分享信息
 * @param params
 */
export const delShareInfoAPI = (params: { id: string }) => request.get(ServerEnum.System + '/deviceRole/deleteById/' + params.id)

/**
 * 接受或拒绝来自手机号的分享通知
 * @param params
 */
export const acceptOrRejectShareAPI = (params: {
  // 消息ID
  id: string,
  // 是否同意接收 true-接收
  receiveStatus: boolean
}) => request.post(ServerEnum.System + '/deviceRole/save/phone', params)

/**
 * 解绑设备
 * @param params
 */
export const unShareDeviceAPI = (params: {
  // 设备id
  id: string
}) => request.get(ServerEnum.System + '/deviceRole/unReception/' + params.id)

/**
 * 批量分享
 * @param params
 */
export const bulkShareDeviceAPI = (params: {
  // 共享有效期
  expiredTime?: string
  // 账户手机号
  phone?: string
  // 权限类型 0-仅查看、1-允许控制、3-可管理
  roleType?: string
  // 设备id列表
  deviceIdList?: string[]
}) => request.post(ServerEnum.System + '/deviceRole/batchPhone', params)

// endregion

// region TODO 组态分享

/**
 * 分页查询
 * @param params
 */
export const getSelfShareListByPageAPI = (params: APIParams.Page<{
  // 权限类型 0-仅查看、1-允许控制、3-可管理
  roleType?: string,
  // 共享状态（0代表不共享 1代表共享 2代表管理员）
  status?: string,
  // 开始时间
  startTime?: string
  // 结束时间
  endTime?: string
  // 设备Id
  configurationId: string
}>) => request.post<APIResult.Page<ConfigurationRoleDTO[]>>(ServerEnum.System + '/configurationRole/page', params)

/**
 * 手机号共享组态
 * @param params
 */
export const selfShareByPhoneAPI = (params: {
  // 组态id
  configurationId?: string
  // 共享有效期
  expiredTime?: string
  // 账户手机号
  phone?: string
  // 权限类型 0-仅查看、1-允许控制、3-可管理
  roleType?: string
}) => request.post(ServerEnum.System + '/configurationRole/phone', params)

/**
 * 接受或拒绝来自手机号的分享组态通知
 * @param params
 */
export const selfAcceptOrRejectShareAPI = (params: {
  // 消息ID
  id: string,
  // 是否同意接收 true-接收
  receiveStatus: boolean
}) => request.post(ServerEnum.System + '/configurationRole/save/phone', params)

/**
 * 编辑分享信息
 * @param params
 */
export const selfEditShareInfoAPI = (params: {
  // 组态id
  configurationId?: string
  // 过期时间
  expiredTime?: string
  // 组态权限id
  id?: string
  // 权限类型 0-仅查看、1-允许控制、3-可管理
  roleType?: string
  // 用户id
  userId?: string
  // 共享状态（1代表不共享 0代表共享）
  status?: string
}) => request.post(ServerEnum.System + '/configurationRole/update', params)

/**
 * 删除分享信息
 * @param params
 */
export const delSelfShareInfoAPI = (params: { id: string }) => request.get(ServerEnum.System + '/configurationRole/deleteById/' + params.id)

/**
 * 解绑设备
 * @param params
 */
export const unShareSelfAPI = (params: {
  // 组态id
  id: string
}) => request.get(ServerEnum.System + '/configurationRole/unReception/' + params.id)

// endregion
